/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86183
 * Date: 2024-04-10
 * Time: 17:01
 */
//public class Test {
//    public static void main(String[] args) {
//
//        /**
//         *  corePoolSize:核心线程数
//         *  maximumPoolSize:最大线程数
//         *  标准库中线程是这样设定的:把线程分为两类:
//         *  1:核心线程:  corePoolSize
//         *  2:非核心线程  ;
//         *  maximumPoolSize:核心线程数+非核心线程数
//         */
////        ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
////        long keepAliveTime, TimeUnit unit,
////                BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory,
////                RejectedExecutionHandler handler)
//
//
//        /**
//         *   keepAliveTime,非核心线程,允许空闲的最大时间
//         *   非核心线程,要在线程不忙的时候,回收掉,但不是立即回收,
//         *   只有超过这个最大空闲时间,线程还未工作,才会被回收掉
//         *   TimeUnit unit,单位:s,分钟,小时,毫秒........
//         */
//        Thread t1=new Thread(()->{
//            int count=0;
//            while(true){
//                count++;
//            }
//        });
////        /**
////         * 创建一个Point类
////         */
////        class Point{
////            public Point(double x,double y){
////                //笛卡尔坐标系下的构造方法
////            }
////            public Point(double r,double a){
////                //极坐标系
////            }
////        }
//        class Point{
//
//        }
//        class PointBuilder{
//            //把构造方法包装一层的方法,就称为"工厂方法"
//            public static Point makePointByXY(double x,double y){
//                Point p=new Point();
//                p.setX(x);
//                p.setY(y);
//                return p;
//            }
//            public  static Point makePointByRa(double r,double a){
//                Point p=new Point();
//                p.setR(r);
//                p.setA(a);
//                return  p;
//            }
//        }
/**
 *    RejectedExecutionHandler handler;拒绝策略
 *    其实是一个枚举类型,规定了采用哪种拒绝策略
 *    如果当前队列满了,仍要继续添加任务,直接阻塞不合适
 *ThreadPoolExecutor.AbortPolicy ，
 * 直接抛出异常,让程序员快速的知道,任务处理不过来了,直接罢工了(之前的任务也不执行了)
 *  ThreadPoolExecutor.CallerRunsPolicy ，线程池不管它,哪个线程添加的任务,哪个线程来执行
 *  ThreadPoolExecutor.DiscardOldestPolicy ，丢弃掉最老的任务,让新的任务去队列中排队
 *  ThreadPoolExecutor.DiscardPolicy  丢弃掉最新的任务(添加任务的线程执不执行不知道),线程池仍然完成原来的任务
 *
 */

    }
}
